﻿//通过下标来进行算法判断
// 主意：当出现连续数据时，可考虑用数组的下标进行判断
//int* findErrorNums(int* nums, int numsSize, int* returnSize) {
//    int i = 0;
//    int* newnums = (int*)malloc(sizeof(int) * numsSize);
//    memset(newnums, 0, sizeof(int) * numsSize);
//    for (i = 0; i < numsSize; i++)
//        newnums[nums[i] - 1]++;
//    for (i = 0; i < numsSize; i++)
//    {
//        if (newnums[i] == 2)
//            nums[0] = i + 1;
//        if (newnums[i] == 0)
//            nums[1] = i + 1;
//    }
//    *returnSize = 2;
//    return nums;
//}

//#include"Slist.h"
//void StackInit(Stack* ps)
//{
//	ps->_a = (STDataType*)malloc(sizeof(STDataType) * 4);
//	ps->_top = 0;
//	ps->_capacity = 4;
//}
//void StackPush(Stack* ps, STDataType data)
//{
//	assert(ps);
//	if (ps->_top == ps->_capacity)
//	{
//		ps->_a = (STDataType*)realloc(ps->_a, ps->_capacity + sizeof(STDataType) * 4);
//		if (!ps->_a)
//		{
//			perror("realloc");
//			exit(-1);
//		}
//		ps->_capacity += ps->_capacity;
//	}
//	ps->_a[ps->_top++] = data;
//}
//void StackPop(Stack* ps)
//{
//	assert(ps);
//	if (!ps->_top)
//	{
//		fprintf(stdout, "栈已空，不能出栈\n");
//		return;
//	}
//	ps->_top--;
//}
//STDataType StackTop(Stack* ps)
//{
//	assert(ps);
//	if (!ps->_top)
//	{
//		fprintf(stdout, "没有任何元素\n");
//		return 0;
//	}
//	return ps->_a[ps->_top - 1];
//}
//int StackSize(Stack* ps)
//{
//	assert(ps);
//	return ps->_top;
//}
//int StackEmpty(Stack* ps)
//{
//	assert(ps);
//	return ps->_top ? 0 : 1;
//}
//void StackDestroy(Stack* ps)
//{
//	assert(ps);
//	free(ps->_a);
//	ps->_a = 0;
//}
//int main()
//{
//	Stack* ps = (Stack*)malloc(sizeof(Stack));
//	StackInit(ps);// 初始化栈
//
//	// 入栈
//	StackPush(ps, 1);
//	StackPush(ps, 2);
//	StackPush(ps, 3);
//	StackPush(ps, 4);
//	StackPush(ps, 5);
//
//	StackPop(ps);// 出栈
//
//	STDataType n = StackTop(ps);// 获取栈顶元素 
//	fprintf(stdout, "元素为: %d\n", n);
//
//	int count = StackSize(ps);// 获取栈中有效元素个数 
//	fprintf(stdout, "栈共有的元素个数: %d\n", count);
//
//
//	//检测栈是否为空，如果为空返回非零结果，如果不为空返回0 
//	int m = StackEmpty(ps);
//	if (!m)
//		fprintf(stdout, "此栈不为空\n");
//	else
//		fprintf(stdout, "此栈为空\n");
//
//	StackDestroy(ps);// 销毁栈 
//	return 0;
//}